iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0

1. 深入理解 Pods 概念

Pods 是 Kubernetes 中最小的可部署單元,通常包含一個或多個容器。

實作步驟:

  1. 創建一個簡單的 Pod:

    創建文件 my-pod.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
    
  2. 應用 Pod 配置:

    kubectl apply -f my-pod.yaml
    
  3. 查看 Pod 狀態:

    kubectl get pods
    kubectl describe pod my-pod
    
  4. 訪問 Pod:

    kubectl port-forward my-pod 8080:80
    

    然後在瀏覽器訪問 http://localhost:8080

localhost

2. 創建和管理 Deployments

Deployments 管理 Pod 的創建和擴展,提供聲明式更新。

實作步驟:

  1. 創建 Deployment:

    創建文件 my-deployment.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            ports:
            - containerPort: 80
    
  2. 應用 Deployment:

    kubectl apply -f my-deployment.yaml
    
  3. 查看 Deployment 狀態:

    kubectl get deployments
    kubectl describe deployment nginx-deployment
    
  4. 更新 Deployment(例如,更改鏡像版本):

    kubectl set image deployment/nginx-deployment nginx=nginx:1.16.1
    
  5. 回滾 Deployment:

    kubectl rollout undo deployment/nginx-deployment
    

rollback

3. 學習 ReplicaSets 的作用

ReplicaSets 確保指定數量的 Pod 副本在運行。通常通過 Deployment 間接使用。

實作步驟:

  1. 查看 Deployment 創建的 ReplicaSet:

    kubectl get rs
    
  2. 描述 ReplicaSet:

    kubectl describe rs <replicaset-name>
    
  3. 手動縮放 ReplicaSet(不推薦,通常應該縮放 Deployment):

    kubectl scale rs <replicaset-name> --replicas=4
    

rs

4. 實踐 Service 的創建和使用

Service 為一組 Pods 提供穩定的網絡端點。

實作步驟:

  1. 創建 Service:

    創建文件 my-service.yaml:

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service
    spec:
      selector:
        app: nginx
      ports:
        - protocol: TCP
          port: 80
          targetPort: 80
    
  2. 應用 Service:

    kubectl apply -f my-service.yaml
    
  3. 查看 Service:

    kubectl get services
    kubectl describe service nginx-service
    

Service

5. 探索不同類型的 Services

ClusterIP(默認類型):

  • 用於集群內部通信
  • 已經在上面的例子中創建

NodePort:

  1. 創建 NodePort Service:

    修改 my-service.yaml:

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-nodeport
    spec:
      type: NodePort
      selector:
        app: nginx
      ports:
        - port: 80
          targetPort: 80
          nodePort: 30080  # 可選,如果不指定會自動分配
    
  2. 應用並查看:

    kubectl apply -f my-service.yaml
    kubectl get services
    
  3. 訪問(如果使用 Minikube):

    minikube service nginx-nodeport --url
    

ng

LoadBalancer:

  1. 創建 LoadBalancer Service(注意:需要雲提供商支持):

    修改 my-service.yaml:

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-loadbalancer
    spec:
      type: LoadBalancer
      selector:
        app: nginx
      ports:
        - port: 80
          targetPort: 80
    
  2. 應用並查看:

    kubectl apply -f my-service.yaml
    kubectl get services
    
  3. 在支持的環境中,你會看到一個外部 IP 分配給這個服務。

load

小結

這個實作過程涵蓋了 Kubernetes 的核心概念,包括 Pods、Deployments、ReplicaSets 和不同類型的 Services。通過這些步驟,你可以親自體驗這些概念是如何在實際環境中運作的。


上一篇
Day25-Minikube基礎練習-2
下一篇
Day27-Minikube基礎練習-4
系列文
從零開始的DevOps猴!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言